【小ネタ】GA前のAWS Lambda event sourcesを再び表示させるには
こんにちは、せーのです。今日は先日GA(general availability : 一般リリースのこと)されましたAWS Lambdaでちょっと困ったことがあったのでご紹介します。
Preview時代のイベントソースが見当たらない
GAになる前は「Preview」というリビジョンで提供されていたLambdaですが、GA後にコンソール画面を見てみるとイベントソースの部分がこのような表示になっています。
試してみるとlambda自体はイベントソースに紐付いているようなのですが、肝心のイベントソースが見当たりません。 読んでみると「4/9より前に更新されているS3イベントソースは非表示となります」と書かれています。なんでだ。なんでだーーーーーーーー!!
叫んでも特に解決しなかったのでどうにかしないといけません。できればこの見えないイベントソースを消して、新たにイベントソースを作りたいところですが本来イベントソースを削除する場所は
ここにあり、イベントソースが見えないと消すことも出来ないわけです。さあどうしよう。
S3のevent sourceはS3からも設定できる
実はこのイベントソース、Lambda functionから「このファンクションのトリガーとなるイベントは」と設定する方法の他に、S3のバケットから「このバケットへのイベントで何を動かすか」という方法でも設定できるのです。 S3のコンソール画面からトリガーとなるバケットを選択し、Propertyタブを押して[Event]のトグルを開くと
ようやくイベントソースが見えました。開いてみると
なにやら注意書きが書かれています。要約すると「今までInvocation Roleを使ってLambda functionの実行を許可してましたが、Invocation Roleは廃止になる予定なのでこの設定をsaveするとInvocation Roleをdropしていい感じに権限をつけます」ということらしいです。こちらの記事にもあったように、今までは「Lambdaが他のAWSリソースを触るためのロール」の他に「Lambdaを実行させるためのロール」も設定していたのですが、これがどうやら廃止になるようです。なるほど、権限の問題で表示されなかったのですね。ということで早速Saveボタンを押します。
この状態でLambdaのコンソールにもう一度戻ってみると
おお、ようやく出てきました。
まとめ
いかがでしたでしょうか。これはなかなか気が付かないところでしたね。 ところで上のスクリーンショットの数々の中に実はもう一つ問題があるのですが、それは現在調査中ですので、分かり次第また記事にいたします。